When you select an allocation in a Snapshot, the call stack for the allocation will be displayed in the Call Stack window. This is the recorded chain of function calls at the time the allocation occurred.

WonderLeak may classify a module within the target process as being external. External modules are typically system modules (eg. modules loaded from C:\Windows\System32\) or third party modules used by the target process. You can configure what modules are deemed to be external via the application's Symbol Settings.

External modules are displayed in a grayed out text to help identify them in the user interface. A check-box View External Modules allows you to display or hide external modules from the call stack.

The following columns are available in the call stack window.

  • Module - The module name and byte offset corresponding to the location of this call stack entry. In the case of Just in Time (JIT) compiled code, no module will be available. In this instance the address in memory of the call stack entry will be displayed.
  • Symbol - If symbol information for this call stack entry is available, the symbol name and offset will be displayed. Some symbol names are mangled and you can alternate between displaying the mangled or demangled name using the Demange Names check-box at the bottom for the call stack window.
  • Source - If symbol information for this call stack entry is available, the source file and line number corresponding to the symbol name and offset will be displayed.
  • Hint - This column is not displayed by default. If you right click on the table header you can enable this column. The possible hints are as follows:
    • External Module - This call stack entry is from an external module.
    • Unknown Module - This call stack entry if not from any known module. This is indicative of Just In Time (JIT) compiled code.
    • TD32 Symbols - This call stack entry ware resolved with TD32 symbol information.
    • COFF Symbols - This call stack entry ware resolved with COFF symbol information.
    • PDB Symbols - This call stack entry ware resolved with PDB symbol information.
    • Export Symbol - This call stack entry ware resolved with Export symbol information.
    • DWARF Symbols - This call stack entry ware resolved with DWARF symbol information.
    • MAP Symbols - This call stack entry ware resolved with MAP symbol information.

Module hints are useful when creating filters, for example the default filter If All Call Stack Hint contains "External Module" then exclude allows you to filter out allocations that occur solely from external code, leaving only allocations the occur during non external code (ie. user code) paths.

Selecting an entry in the call stack will display the source file associated with the entry if the source file is available. Right clicking on a call stack entry will display a pop-up menu:

  • Mark Source Line as Ignore - An allocation may be tagged as ignore if a location in the allocations call stack contains a source code entry with a special ignore comment. This comment is in the form of a line comment such as // WonderLeak-Ignore for C/C++ code. This comment can be automatically inserted into the source file location specified by the currently selected call stack entry. Once inserted, all allocations which have this call stack entry in their call stack will now be tagged as ignore. A default filter rule exists to exclude any allocation tagged as ignore.
  • Open Source File in External Editor... - Opens the source file specified by the currently selected call stack entry in the editor that has been configured as the external editor. You can configure what external editor to use via the application settings.
  • Add Filter... - A helper to create a new filter rule based on the cell value that has been right clicked.
  • Copy Cell Value - Copies the cell value that has been right clicked to the system clipboard.
  • Copy Row comma Separated Values (CVS) - Copies the currently selected row in a comma separated value (CSV) format to the system clipboard.
  • Copy Table comma Separated Values (CVS) - Copies the entire call stack table in a comma separated value (CSV) format to the system clipboard.
Copyright © 2021, Relyze Software Limited